Organizations 環境で AWS Security Hub を全リージョンへ簡単セットアップする
以下 Security Hub のセットアップをなるべく楽ちんに行います。
- AWS Security Hub を Organizations 組織内の 全てのアカウントの全てのリージョンで有効化する
- 有効化するセキュリティ基準はデフォルトのもの (以下 2項目)
- CIS AWS Foundations Benchmark v1.2.0
- AWS 基礎セキュリティのベストプラクティス v1.0.0
- 今後追加されたメンバーアカウントに対して自動で上記セットアップを行う
- 組織レベルの Security Hub 管理を、特定メンバーアカウントへ委任する
- 【2021-10-22 追記】 「 全てのアカウントと 全てのリージョン 」の検出結果を 委任されたアカウントの特定リージョンへ集約する ※
Security Hub の Organizations連携機能についての詳細は以下ブログを参照ください。
※ 検出結果のリージョン集約機能については以下ブログを参照ください。
0. 前提条件
Security Hub はバックグラウンドで AWS Configを利用します。 そのため AWS Config が全アカウント、リージョン単位で有効化されていることが前提条件です。
1. 『信頼されたアクセス』を有効化する
マネジメントコンソールの AWS Organizations の [サービス] へ移動します。 Security Hub を 「アクセス有効」 にしておきましょう。 Organizations 連携を活用するために必要です。
※もし「Security Hubコンソールを使用して有効化することお勧めします」な表示が出た場合は、 気にせず有効にしましょう。
2. 管理アカウントで Security Hub を有効化する
Organizations 連携で 基本的にメンバーアカウントの Security Hub は自動で有効化されます。 しかし 管理アカウントは例外です 。
なので 管理アカウント上で 全リージョン Security Hub を有効化しておきます。
AWS CloudShell もしくはローカルから AWS CLI を実行します。
aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \ | while read region; do echo "##### enable security hub in ${region}" aws --region ${region} securityhub enable-security-hub --enable-default-standards done
確認コマンドはこちら
aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \ | while read region; do echo "##### check hub in ${region}" aws --region ${region} securityhub describe-hub --output yaml done
3. メンバーアカウントへ委任する
特定メンバーアカウント(Audit用アカウントなど)に Security Hub を委任します。
同じく CloudShell もしくはローカルから AWS CLI を実行します。
adminAccount=123456789012 aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \ | while read region; do echo "##### enable organization admin account in ${region}" aws --region ${region} securityhub enable-organization-admin-account \ --admin-account-id ${adminAccount} done
4. メンバーアカウントで Security Hub セットアップ
この作業はマネコンの一括設定が便利なのでポチポチしていきます。
委任先のメンバーアカウントへログインします。
Security Hub の [設定] ページに行きましょう。 ポップアップが出てくるはずです。
「このリージョンで組織の Security Hub を有効化する」ポップアップの [有効化] を選択しましょう。
「 Auto-enable
が ON になっていること」および
「すべてのアカウントのステータスが Enabled
となっていること」が確認できれば OKです。
この作業を 全リージョン分、ぽちぽちと設定してきましょう。
5. リージョン集約の設定をする
委任先のメンバーアカウントへログインします。
集約したいリージョン(今回は東京) の Secrity Hub のページに [リージョン] タブがあります。 [検出結果の集約を設定] を選択しましょう。
『集約リージョンの 有り/無し』設定と『リンクされたリージョン』設定 を行います。 リンクされたリージョンは 全てのリージョン、および将来のリージョン とします。
[保存] を選択します。以下のような設定値になればOKです。
6. チェック
これで設定完了です。
確認する場合は以下 AWS CLIコマンドを委任先メンバーアカウント上で実施しましょう。
aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \ | while read region; do echo "##### list members in ${region}" aws --region ${region} securityhub list-members \ --query "Members[].[AccountId,MemberStatus]" --output table done # ##### eu-north-1 # ----------------------------- # | ListMembers | # +---------------+-----------+ # | 12345678901x | Enabled | # | 12345678901x | Enabled | # | 12345678901x | Enabled | # | 12345678901x | Enabled | # | 12345678901x | Enabled | # | 12345678901x | Enabled | # +---------------+-----------+ # ##### ap-south-1 # ----------------------------- # | ListMembers | # (略)
すべて Enabled となっていればOKです。
おわりに
Organizations 環境の Security Hub セットアップを行ってみました。
この後の作業としては『通知設定』や『コントロールのチューニング(有効化/無効化)』があります。
- 通知設定 … 以下参考になります
- コントロールのチューニング … 基本は「重要度の高いもの」、「失敗しているもの」を優先度高くして対応していくと良いでしょう
コントロールのチューニングは量が多くて大変ですが、頑張ってやっていきましょう。 Security Hub の運用方法については以下ブログが参考になります。
【2021年版】AWS Security HubによるAWSセキュリティ運用を考える | DevelopersIO